package Annotation;

import java.lang.reflect.Method;

/**
 * @Author: cjj
 * 注解
 */
public class AnnotationTest4 {
    @MyTest
    public void test1() {
        System.out.println("====test1====");
    }

    public void test2() {
        System.out.println("====test2====");
    }

    @MyTest
    public void test3(){
    System.out.println("====test3====");
    }

    public static void main(String[] args) {
        AnnotationTest4 annotation = new AnnotationTest4();
        annotation.test1();
        annotation.test2();
        annotation.test3();

        //1.得到Clas对象
       Class aclass= annotation.getClass();

       //2.提取这个类中的全部成员方法
        Method[] methods = aclass.getDeclaredMethods();

        //3.遍历这个数组中的每个方法,看方法上是否存在@MyTest注解,存在触发该方法执行
        for (Method method : methods) {
            //判断方法上是否有@MyTest注解
            if (method.isAnnotationPresent(MyTest.class)) {
                //触发方法执行
                try {
                    method.invoke(annotation);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
